home *** CD-ROM | disk | FTP | other *** search
Wrap
using System; using System.Collections; using GBPVR.Backend.Common; using GBPVR.Public; namespace GBPVRSchedule { /// <summary> /// Summary description for GBPVRSchedule. /// </summary> public class GBPVRSchedule : Schedule { public GBPVRSchedule() { // // TODO: Add constructor logic here // // RecordingFactor.getInstance() is not thread safe, so try and invoke it early where we're pretty sure we're single threaded LoadRecordingSchedule(); } private IScheduleHelper scheduleHelper { get { return ScheduleHelper.getInstance(); } } public override IList LoadRecordingSchedule() { return scheduleHelper.LoadRecordingSchedule(); } public override Programme GetProgrammeByOID(int oid) { return scheduleHelper.GetProgrammeByOID(oid); } public override Channel GetChannelByOID(int oid) { // Can't use the interface for GetChannelByOID yet return ScheduleHelper.getInstance().GetChannelByOID(oid); } public override void CreateReminder(Programme programme) { scheduleHelper.CreateReminder(programme); } public override void RemoveReminder(Programme programme) { scheduleHelper.RemoveReminder(programme); } public override ArrayList GetReminderList() { return scheduleHelper.GetReminderList(); } public override void UpdateScheduledRecording(ScheduledRecording scheduledRecording) { scheduleHelper.UpdateScheduledRecording(scheduledRecording); } public override void CancelScheduledRecording(ScheduledRecording scheduledRecording) { scheduleHelper.CancelScheduledRecording(scheduledRecording); } public override IList GetListingsForTimePeriod(DateTime startTime, DateTime endTime) { return scheduleHelper.GetListingsForTimePeriod(startTime, endTime); } public override ScheduledRecording GetScheduledRecordingByOID(int oid) { return scheduleHelper.GetScheduledRecordingByOID(oid); // // Can't use the interface for GetScheduledRecordingByOID yet // IList myScheduledRecordings = scheduleHelper.LoadRecordingSchedule(); // foreach (ScheduledRecording scheduledRecording in myScheduledRecordings) // { // if (scheduledRecording.getOID() == oid) // { // return scheduledRecording; // } // } // return null; } public override bool ScheduleOnce(Programme programme, int PrePad, int PostPad) { ScheduledRecording myRecording = new ScheduledRecording(); try { myRecording = scheduleHelper.SheduleRecording( programme.getChannelOID(), programme.getStartTime(), programme.getEndTime(), programme, ScheduledRecording.TYPE_RECORD_ONCE, ScheduledRecording.GROUP_NONE, null); if (PrePad > 0 || PostPad > 0) { myRecording.setPrePadMinutes(PrePad); myRecording.setPostPadMinutes(PostPad); scheduleHelper.UpdateScheduledRecording(myRecording); } } catch (Exception e1) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e1.Message); return false; } if (myRecording != null) { try { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error) || myRecording.getRecordingStatus().Equals(Status.Conflict)) { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error)) { Logger.Error("Recording not scheduled. Status is Completed with Error."); } else { Logger.Error("Recording not scheduled. Status is Conflict."); } return false; } else { return true; } } catch (Exception e2) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e2.Message); return false; } } else { Logger.Error("Recording not scheduled. Recording not found after calling GBPVR API to schedule the programme."); return false; } } public override bool ScheduleOnce(Programme programme, Quality quality, int PrePad, int PostPad) { ScheduledRecording myRecording = new ScheduledRecording(); try { myRecording = scheduleHelper.SheduleRecording( programme.getChannelOID(), programme.getStartTime(), programme.getEndTime(), programme, ScheduledRecording.TYPE_RECORD_ONCE, ScheduledRecording.GROUP_NONE, null, (int) quality); if (PrePad > 0 || PostPad > 0) { myRecording.setPrePadMinutes(PrePad); myRecording.setPostPadMinutes(PostPad); scheduleHelper.UpdateScheduledRecording(myRecording); } } catch (Exception e1) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e1.Message); return false; } if (myRecording != null) { try { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error) || myRecording.getRecordingStatus().Equals(Status.Conflict)) { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error)) { Logger.Error("Recording not scheduled. Status is Completed with Error."); } else { Logger.Error("Recording not scheduled. Status is Conflict."); } return false; } else { return true; } } catch (Exception e2) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e2.Message); return false; } } else { Logger.Error("Recording not scheduled. Recording not found after calling GBPVR API to schedule the programme."); return false; } } public override bool ScheduleAnyTime(Programme programme, RecType type, int PrePad, int PostPad) { ScheduledRecording myRecording = new ScheduledRecording(); try { DateTime startTime = DateTime.MinValue; DateTime endTime = DateTime.MinValue; myRecording = scheduleHelper.SheduleRecording( programme.getChannelOID(), startTime, endTime, null, (int)type, ScheduledRecording.GROUP_ALLOCATE, programme.getTitle()); if (PrePad > 0 || PostPad > 0) { myRecording.setPrePadMinutes(PrePad); myRecording.setPostPadMinutes(PostPad); scheduleHelper.UpdateScheduledRecording(myRecording); } } catch (Exception e1) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e1.Message); return false; } if (myRecording != null) { try { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error) || myRecording.getRecordingStatus().Equals(Status.Conflict)) { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error)) { Logger.Error("Recording not scheduled. Status is Completed with Error."); } else { Logger.Error("Recording not scheduled. Status is Conflict."); } return false; } else { return true; } } catch (Exception e2) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e2.Message); return false; } } else { Logger.Error("Recording not scheduled. Recording not found after calling GBPVR API to schedule the programme."); return false; } } public override bool ScheduleAnyTime(Programme programme, Quality quality, RecType type, int PrePad, int PostPad) { ScheduledRecording myRecording = new ScheduledRecording(); try { DateTime startTime = DateTime.MinValue; DateTime endTime = DateTime.MinValue; myRecording = scheduleHelper.SheduleRecording( programme.getChannelOID(), startTime, endTime, null, (int)type, ScheduledRecording.GROUP_ALLOCATE, programme.getTitle(), (int)quality); if (PrePad > 0 || PostPad > 0) { myRecording.setPrePadMinutes(PrePad); myRecording.setPostPadMinutes(PostPad); scheduleHelper.UpdateScheduledRecording(myRecording); } } catch (Exception e1) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e1.Message); return false; } if (myRecording != null) { try { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error) || myRecording.getRecordingStatus().Equals(Status.Conflict)) { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error)) { Logger.Error("Recording not scheduled. Status is Completed with Error."); } else { Logger.Error("Recording not scheduled. Status is Conflict."); } return false; } else { return true; } } catch (Exception e2) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e2.Message); return false; } } else { Logger.Error("Recording not scheduled. Recording not found after calling GBPVR API to schedule the programme."); return false; } } public override bool ScheduleAnyTime(Programme programme, Quality quality, DayType dayType, int keepnumRecordings, RecType type, int PrePad, int PostPad) { ScheduledRecording myRecording = new ScheduledRecording(); try { DateTime startTime = DateTime.MinValue; DateTime endTime = DateTime.MinValue; switch (dayType) { case DayType.SheduleAnyDay: myRecording = scheduleHelper.SheduleRecording(programme.getChannelOID(), startTime, endTime, null, (int)type, ScheduledRecording.GROUP_ALLOCATE, programme.getTitle(), (int)quality, keepnumRecordings, ReoccuringRecordingExtras.DAY_SUNDAY | ReoccuringRecordingExtras.DAY_MONDAY | ReoccuringRecordingExtras.DAY_TUESDAY | ReoccuringRecordingExtras.DAY_WEDNESDAY | ReoccuringRecordingExtras.DAY_THURSDAY | ReoccuringRecordingExtras.DAY_FRIDAY | ReoccuringRecordingExtras.DAY_SATURDAY, PrePad, PostPad); break; case DayType.SheduleThisDay: int day = (int)Math.Pow(2, (int)programme.getStartTime().DayOfWeek); myRecording = scheduleHelper.SheduleRecording(programme.getChannelOID(), startTime, endTime, null, (int)type, ScheduledRecording.GROUP_ALLOCATE, programme.getTitle(), (int)quality, keepnumRecordings, day, PrePad, PostPad); break; default: return false; } } catch (Exception e1) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e1.Message); return false; } if (myRecording != null) { try { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error) || myRecording.getRecordingStatus().Equals(Status.Conflict)) { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error)) { Logger.Error("Recording not scheduled. Status is Completed with Error."); } else { Logger.Error("Recording not scheduled. Status is Conflict."); } return false; } else { return true; } } catch (Exception e2) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e2.Message); return false; } } else { Logger.Error("Recording not scheduled. Recording not found after calling GBPVR API to schedule the programme."); return false; } } public override bool ScheduleAnyTime(Programme programme, Quality quality, DayType dayType, int keepnumRecordings, ArrayList days, RecType type, int PrePad, int PostPad) { ScheduledRecording myRecording = new ScheduledRecording(); try { switch (dayType) { case DayType.SheduleSpecificDays: DateTime startTime = DateTime.MinValue; DateTime endTime = DateTime.MinValue; Day day = 0; // Iterate through the ArrayList of days to create the daymask for the recording for (int i = 0; i < days.Count; i++) { day = day | (Day)days[i]; } myRecording = scheduleHelper.SheduleRecording(programme.getChannelOID(), startTime, endTime, null, (int)type, ScheduledRecording.GROUP_ALLOCATE, programme.getTitle(), (int)quality, keepnumRecordings, (int)day, PrePad, PostPad); break; default: return false; } } catch (Exception e1) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e1.Message); return false; } if (myRecording != null) { try { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error) || myRecording.getRecordingStatus().Equals(Status.Conflict)) { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error)) { Logger.Error("Recording not scheduled. Status is Completed with Error."); } else { Logger.Error("Recording not scheduled. Status is Conflict."); } return false; } else { return true; } } catch (Exception e2) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e2.Message); return false; } } else { Logger.Error("Recording not scheduled. Recording not found after calling GBPVR API to schedule the programme."); return false; } } public override bool ScheduleThisTime(Programme programme, RecType type, int PrePad, int PostPad) { ScheduledRecording myRecording = new ScheduledRecording(); try { DateTime startTime = programme.getStartTime(); DateTime endTime = programme.getEndTime(); myRecording = scheduleHelper.SheduleRecording( programme.getChannelOID(), startTime, endTime, null, (int)type, ScheduledRecording.GROUP_ALLOCATE, programme.getTitle()); if (PrePad > 0 || PostPad > 0) { myRecording.setPrePadMinutes(PrePad); myRecording.setPostPadMinutes(PostPad); scheduleHelper.UpdateScheduledRecording(myRecording); } } catch (Exception e1) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e1.Message); return false; } if (myRecording != null) { try { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error) || myRecording.getRecordingStatus().Equals(Status.Conflict)) { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error)) { Logger.Error("Recording not scheduled. Status is Completed with Error."); } else { Logger.Error("Recording not scheduled. Status is Conflict."); } return false; } else { return true; } } catch (Exception e2) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e2.Message); return false; } } else { Logger.Error("Recording not scheduled. Recording not found after calling GBPVR API to schedule the programme."); return false; } } public override bool ScheduleThisTime(Programme programme, Quality quality, RecType type, int PrePad, int PostPad) { ScheduledRecording myRecording = new ScheduledRecording(); try { DateTime startTime = programme.getStartTime(); DateTime endTime = programme.getEndTime(); myRecording = scheduleHelper.SheduleRecording( programme.getChannelOID(), startTime, endTime, null, (int)type, ScheduledRecording.GROUP_ALLOCATE, programme.getTitle(), (int)quality); if (PrePad > 0 || PostPad > 0) { myRecording.setPrePadMinutes(PrePad); myRecording.setPostPadMinutes(PostPad); scheduleHelper.UpdateScheduledRecording(myRecording); } } catch (Exception e1) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e1.Message); return false; } if (myRecording != null) { try { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error) || myRecording.getRecordingStatus().Equals(Status.Conflict)) { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error)) { Logger.Error("Recording not scheduled. Status is Completed with Error."); } else { Logger.Error("Recording not scheduled. Status is Conflict."); } return false; } else { return true; } } catch (Exception e2) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e2.Message); return false; } } else { Logger.Error("Recording not scheduled. Recording not found after calling GBPVR API to schedule the programme."); return false; } } public override bool ScheduleThisTime(Programme programme, Quality quality, DayType dayType, int keepnumRecordings, RecType type, int PrePad, int PostPad) { ScheduledRecording myRecording = new ScheduledRecording(); try { DateTime startTime = programme.getStartTime(); DateTime endTime = programme.getEndTime(); switch (dayType) { case DayType.SheduleAnyDay: myRecording = scheduleHelper.SheduleRecording(programme.getChannelOID(), startTime, endTime, null, (int)type, ScheduledRecording.GROUP_ALLOCATE, programme.getTitle(), (int)quality, keepnumRecordings, ReoccuringRecordingExtras.DAY_SUNDAY | ReoccuringRecordingExtras.DAY_MONDAY | ReoccuringRecordingExtras.DAY_TUESDAY | ReoccuringRecordingExtras.DAY_WEDNESDAY | ReoccuringRecordingExtras.DAY_THURSDAY | ReoccuringRecordingExtras.DAY_FRIDAY | ReoccuringRecordingExtras.DAY_SATURDAY, PrePad, PostPad); break; case DayType.SheduleThisDay: int day = (int)Math.Pow(2, (int)programme.getStartTime().DayOfWeek); myRecording = scheduleHelper.SheduleRecording(programme.getChannelOID(), startTime, endTime, null, (int)type, ScheduledRecording.GROUP_ALLOCATE, programme.getTitle(), (int)quality, keepnumRecordings, day, PrePad, PostPad); break; default: return false; } } catch (Exception e1) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e1.Message); return false; } if (myRecording != null) { try { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error) || myRecording.getRecordingStatus().Equals(Status.Conflict)) { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error)) { Logger.Error("Recording not scheduled. Status is Completed with Error."); } else { Logger.Error("Recording not scheduled. Status is Conflict."); } return false; } else { return true; } } catch (Exception e2) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e2.Message); return false; } } else { Logger.Error("Recording not scheduled. Recording not found after calling GBPVR API to schedule the programme."); return false; } } public override bool ScheduleThisTime(Programme programme, Quality quality, DayType dayType, int keepnumRecordings, ArrayList days, RecType type, int PrePad, int PostPad) { ScheduledRecording myRecording = new ScheduledRecording(); try { DateTime startTime = programme.getStartTime(); DateTime endTime = programme.getEndTime(); switch (dayType) { case DayType.SheduleSpecificDays: Day day = 0; // Iterate through the ArrayList of days to create the daymask for the recording for (int i = 0; i < days.Count; i++) { day = day | (Day)days[i]; } myRecording = scheduleHelper.SheduleRecording(programme.getChannelOID(), startTime, endTime, null, (int)type, ScheduledRecording.GROUP_ALLOCATE, programme.getTitle(), (int)quality, keepnumRecordings, (int)day, PrePad, PostPad); break; default: return false; } } catch (Exception e1) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e1.Message); return false; } if (myRecording != null) { try { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error) || myRecording.getRecordingStatus().Equals(Status.Conflict)) { if (myRecording.getRecordingStatus().Equals(Status.Completed_Error)) { Logger.Error("Recording not scheduled. Status is Completed with Error."); } else { Logger.Error("Recording not scheduled. Status is Conflict."); } return false; } else { return true; } } catch (Exception e2) { Logger.Error("Recording not scheduled due to an error......"); Logger.Error("Error: " + e2.Message); return false; } } else { Logger.Error("Recording not scheduled. Recording not found after calling GBPVR API to schedule the programme."); return false; } } } }